package com.ashen.study.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @author hxl
 * @Classname ObjectAspect
 * @Description 根据对象实现AOP的功能
 * this/target/bean(this与target的区别在于introduction时新增方法this会拦截,target不会拦截，实现拦截的方法也会被拦截)
 * @Date 2019/9/6 17:08
 */
@Aspect
@Component
public class ObjectAspect {

//    /**匹配UserInfoServiceImpl对象**/
//    @Pointcut("this(com.ashen.study.service.impl.UserInfoServiceImpl)")
//    public void thisAspect() {
//
//    }
//    /**匹配UserInfoServiceImpl对象**/
//    @Pointcut("target(com.ashen.study.service.impl.UserInfoServiceImpl)")
//    public void targetAspect() {
//
//    }
//    /**所有Service结尾AOP检索**/
//    @Pointcut("bean(*Service)")
//    public void beanAspect(){
//
//    }

//    @Before("thisAspect()")
//    public void before() {
//        System.out.println("this is this");
//    }



//    @Before("targetAspect()")
//    public void before() {
//        System.out.println("this is this");
//    }



//    @Before("beanAspect()")
//    public void before(){
//        System.out.println("this is bean");
//    }
}
